package com.silence.springboot.controller;

import com.silence.springboot.common.Result;
import com.silence.springboot.service.UserRoleService;
import com.silence.springboot.vo.input.SetRolesInput;
import com.silence.springboot.vo.output.AssignRolesOutput;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 用户角色关联表 控制层。
 *
 * @author mybatis-flex-helper automatic generation
 * @since 1.0
 */
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/user/role")
@Tag(name = "用户角色关联表控制层")
public class UserRoleController {

    /**
     * 用户角色关联表 业务处理对象。
     */
    private final UserRoleService userRoleService;

    /**
     * 分配角色
     *
     * @param userId 用户id
     * @return 分配角色
     */
    @GetMapping("/assignRoles/{userId}")
    @Operation(summary = "分配角色", description = "分配角色")
    public Result<AssignRolesOutput> assignRoles(@PathVariable("userId") Long userId) {
        // 返回成功
        return Result.success(userRoleService.assignRoles(userId));
    }

    /**
     * 设置角色
     *
     * @param input 分配角色
     * @return 设置角色
     */
    @PostMapping("/setRoles")
    @Operation(summary = "设置角色", description = "设置角色")
    public Result<Void> setRoles(@Validated @RequestBody SetRolesInput input) {
        userRoleService.setRoles(input);
        return Result.success(null);
    }

}